The present disclosure relates to imparting real-time priority-based network communications in an encrypted communication session.
A computer network is a collection of processing nodes coupled together with wired and/or wireless communications links. A computer network can be a single network or a collection of networks (e.g., an internetwork), and can use multiple networking protocols, including internetworking protocols (e.g., Internet Protocol (IP)). These protocols define the manner in which information is prepared for transmission through the network, and typically involve breaking data into segments genetically known as packets (e.g., IP packets, ATM (Asynchronous Transfer Mode) cells) for transmission. These networking protocols are typically organized by a network architecture having multiple layers, where a layer provides communication services to the layer above it. The protocols can include shared-line protocols such as in Ethernet networks, connection-oriented switching protocols such as in AIM networks, and/or connectionless packet-switched protocols such as in IP.
Many computer networks use connectionless packet-switched protocols (e.g., IP). Packets are routed separately and can thus take different paths through the network. Various protocols have been built on top of connectionless packets witched protocols, such as IP, to provide connection based communications over the underlying connectionless protocol. For example, Transmission Control Protocol (TCP), of the TCP/Internet Protocol (IP) protocol stack, sets up a connection at both ends of a communications and attaches a header to the packets that contains the source and destination ports as well as the sequence number of the packet and other administrative information. The destination typically receives a number of TCP packets before sending an acknowledgement to the source. If the acknowledgment fails, the source will generally presume the packets were lost and retransmit those packets. This process ensures reliable delivery.
Another protocol, UDP is connectionless and unreliable, meaning that the protocol does not establish a connection at both ends and does not include a resource for resending lost packets. Real-time Transport Protocol (RTP) operates as a thin layer on top of UDP to create a generalized multipurpose real-time transport protocol. RTP provides support for applications with real-time properties including reconstruction, loss detection, security, and content identification without reliability-induced delays associated with TCP. Real-Time Control Protocol (RTCP) works in conjunction with RTF to provide control support to an application for maintaining an RTP session.
The interactions of various aspects of networks can be complex. Many applications use RTP for transporting media streams. RTP is built over UDP, which generally has no fixed ports associated with it. Firewalls can prevent unauthorized and/or hostile access to a computer system or network. As such, firewalls are generally configured with strict rules specifying static ports through which desired and/or authorized data traffic can pass, while blocking undesirable data. There is no guarantee that a port associated with an incoming RTP/UDP stream will be allowed through the firewall. In addition, NAT devices, which can allow a network to support many more clients than it has fixed IP addresses, are used to translate an IP address used within one network to a different IP address known within another network.